﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

using hou_elearning.Entity;
using hou_elearning.Business;

/// <summary>
/// Class này để chứa các hàm dùng chung
/// </summary>
/// 
namespace hou_elearning.Custom
{
    public class GlobalFunction
    {
	    public GlobalFunction()
	    {
		    
	    }
        /// <summary>
        /// Hàm kiểm tra số lượng slot đăng ký còn lại của khóa học
        /// </summary>
        /// <param>FK_iKhoahocID: Mã khóa học</param>
        /// <return>kiểu int số học viên dự kiến - số học viên đã đăng ký</return>
        /// 
        public static int iSodangkyConlai(long FK_iKhoahocID)
        {
            int iRes = 0;

            KhoahocEntity oKhoahoc = KhoahocBRL.GetOne(FK_iKhoahocID);
            List<DangkykhoahocEntity> lstDangkyKhoahoc = DangkykhoahocBRL.GetByFK_iKhoahocID(FK_iKhoahocID);
            iRes = oKhoahoc.iSoluongdukien - lstDangkyKhoahoc.Count;

            return iRes;
        }


        /// <summary>
        /// Hàm này để đăng ký hoặc hủy đăng ký khóa học
        /// </summary>
        /// <param>FK_iKhoahocID: Mã khóa học, FK_iHocvienID: Mã học viên, bTacvu = true: đăng ký, bTacvu = false: hủy đăng ký</param>
        /// <return>true: nếu đăng ký thành công, false: nếu đăng ký thất bại</return>
        public static Boolean bDangkykhoahoc(Int64 FK_iKhoahocID, Int32 FK_iHocvienID, Boolean bTacvu)
        {
            Boolean bRes = false;
            if(bTacvu == true) //Đăng ký
            {
                DangkykhoahocEntity oDangkykhoahoc = new DangkykhoahocEntity();
                oDangkykhoahoc.FK_iHocvienID = FK_iHocvienID;
                oDangkykhoahoc.FK_iKhoahocID = FK_iKhoahocID;
                oDangkykhoahoc.iTrangthai = 0;
                oDangkykhoahoc.dNgaydangky = DateTime.Parse(DateTime.Now.ToString());
                if (DangkykhoahocBRL.Add(oDangkykhoahoc) > 0)
                {
                    bRes = true;
                }
                else
                {
                    bRes = false;
                }
            }
            else
            {
                long PK_iDangkykhoahoc = 0;
                List<DangkykhoahocEntity> lstDangkykhoahoc = DangkykhoahocBRL.GetByFK_iKhoahocID(FK_iKhoahocID);
                if (lstDangkykhoahoc.Count > 0)
                {
                    List<DangkykhoahocEntity> lstFind = lstDangkykhoahoc.FindAll
                        (
                            delegate(DangkykhoahocEntity oTmp)
                            {
                                return oTmp.FK_iHocvienID == FK_iHocvienID;
                            }
                        );
                    if (lstFind != null && lstFind.Count > 0)
                    {
                        PK_iDangkykhoahoc = lstFind[0].PK_iDangkykhoahocID;
                    }
                }
                lstDangkykhoahoc = null;
                if (DangkykhoahocBRL.Remove(PK_iDangkykhoahoc) == true)
                {
                    bRes = true;
                }
                else
                {
                    bRes = false;
                }
            }

            return bRes;
        }
    }
}